package fr.asip.cps3.exemple.modele.resultats;

import java.util.Vector;

import fr.asip.cps3.exemple.modele.traitements.util.TraitementsUtil;

/**
 * Classe représentant le résultat d'un traitement
 */
public class Resultat {

	/**
	 * Objets potentiellement retournés par l'opération PKCS#11 
	 */
	protected Vector<Object> objets;
	
	/**
	 * Code retour PKCS#11 
	 */
	protected long codeRetour;

	/**
	 * Message retour 
	 */
	protected String retour;	
	
	/**
	 * Description du traitement à l'origine du résultat
	 */
	protected String traitement;

	/**
	 * Constructeur
	 * @param traitement Description du traitement
	 */
	public Resultat(String traitement){
		this.codeRetour = 0L;
		this.retour = "";
		this.traitement = traitement;
		objets = new Vector<Object>();
	}

	/**
	 * Retourne le Code retour PKCS#11 sous forme de chaîne de caractères
	 * @return Code retour PKCS#11 sous forme de chaîne de caractères
	 */
	public String getCodeRetourStr() {
		return TraitementsUtil.retranscritCodeRetour(codeRetour);
	}
	
	/**
	 * Retourne le Code retour PKCS#11
	 * @return Code retour PKCS#11
	 */
	public long getCodeRetour() {
		return codeRetour;
	}

	/**
	 * Mutateur
	 * @param codeRetour Code retour PKCS#11
	 */
	public void setCodeRetour(long codeRetour) {
	   this.codeRetour = codeRetour;
	}

	/**
	 * Retourne le libellé retour en cas de succès 
	 * @return Libellé retour en cas de succès 
	 */
	public String getRetour() {
		return retour;
	}	
	
	/**
	 * Mutateur
	 * @param retour Libellé retour en cas de succès
	 */
	public void setRetour(String retour) {
		this.retour = retour;
	}		
	
	/**
	 * Accesseur
	 * @return Traitement à l'origine du résultat
	 */
	public String getTraitement() {
		return traitement;
	}

	/**
	 * Mutateur
	 * @param traitement Traitement à l'origine du résultat
	 */
	public void setTraitement(String traitement) {
		this.traitement=traitement;
	}
		
	/**
	 * Ajoute du texte à la description de l'opération
	 * @param texte Texte à ajouter à la description de l'opération
	 */
	public void appendTraitement(String texte) {
		this.traitement += texte;
	}
	
	/**
	 * Accesseur
	 * @return Les objects potentiellement retournés par l'opération PKCS#11 
	 */
	public Vector<Object> getObjets() {
		return objets;
	}	
}
